Hazelcast ডিস্ট্রিবিউটেড সিস্টেমে ডেটা ট্রান্সফার এবং সংরক্ষণের জন্য Serialization ব্যবহার করে। Serialization হল এমন একটি প্রক্রিয়া, যার মাধ্যমে অবজেক্টের স্টেটকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তরিত করা হয়, যাতে তা নেটওয়ার্কের মাধ্যমে পাঠানো বা ডিস্কে সংরক্ষিত করা যেতে পারে। Hazelcast দুটি প্রধান Serialization মেকানিজম প্রদান করে: Portable Serialization এবং Identified DataSerializable।
Portable Serialization হল Hazelcast এর একটি নতুন Serialization ফরম্যাট, যা high performance এবং flexibility নিশ্চিত করে। এটি ডেটা সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশন প্রক্রিয়াকে দ্রুত এবং কম জায়গায় সম্পন্ন করতে সক্ষম।
প্রথমে Portable অবজেক্ট তৈরি করতে হয় এবং তাকে DataSerializableFactory
দিয়ে রেজিস্টার করতে হয়। এরপর Hazelcast ক্লাস্টার এই অবজেক্টকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারে।
import com.hazelcast.nio.serialization.Portable;
import com.hazelcast.nio.serialization.PortableReader;
import com.hazelcast.nio.serialization.PortableWriter;
import com.hazelcast.nio.serialization.StreamSerializer;
public class MyPortableObject implements Portable {
private int id;
private String name;
public MyPortableObject() {}
public MyPortableObject(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public int getClassId() {
return 1; // Unique class identifier
}
@Override
public void writePortable(PortableWriter writer) {
writer.writeInt("id", id);
writer.writeUTF("name", name);
}
@Override
public void readPortable(PortableReader reader) {
id = reader.readInt("id");
name = reader.readUTF("name");
}
// Getters and setters
}
এখন, PortableSerialization ফরম্যাটটি ব্যবহার করতে SerializationConfig কনফিগার করতে হবে Hazelcast এর মধ্যে।
SerializationConfig config = new SerializationConfig();
config.addPortableFactory(1, new MyPortableFactory()); // Register Portable class
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getConfig().setSerializationConfig(config);
Identified DataSerializable হল Hazelcast এর পুরনো Serialization ফরম্যাট, যেখানে DataSerializable
ইন্টারফেসটি ব্যবহার করা হয়। এটি একটি কাস্টম Serialization প্রক্রিয়া, যা অনেক দ্রুত এবং কমপ্লেক্স অবজেক্টের জন্য সুবিধাজনক।
DataSerializable
দ্রুত Serialization এবং Deserialization সম্পন্ন করে, এবং এতে একাধিক ফিল্ডের মধ্যে কোনো অপ্রয়োজনীয় তথ্য থাকে না।IdentifiedDataSerializable
কাস্টম Serialization পদ্ধতি ব্যবহারের মাধ্যমে আপনি আপনার অবজেক্টের ফিল্ড সংরক্ষণ করতে পারেন।import com.hazelcast.nio.serialization.IdentifiedDataSerializable;
import com.hazelcast.nio.serialization.DataSerializable;
import com.hazelcast.nio.serialization.ObjectDataInput;
import com.hazelcast.nio.serialization.ObjectDataOutput;
import java.io.IOException;
public class MyDataSerializableObject implements IdentifiedDataSerializable {
private int id;
private String name;
public MyDataSerializableObject() {}
public MyDataSerializableObject(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public int getFactoryId() {
return 1; // Factory ID for this class
}
@Override
public int getClassId() {
return 1; // Unique class ID
}
@Override
public void writeData(ObjectDataOutput out) throws IOException {
out.writeInt(id);
out.writeUTF(name);
}
@Override
public void readData(ObjectDataInput in) throws IOException {
id = in.readInt();
name = in.readUTF();
}
// Getters and setters
}
Hazelcast ক্লাস্টারে IdentifiedDataSerializable ফরম্যাটটি ব্যবহারের জন্য আপনাকে একটি DataSerializableFactory রেজিস্টার করতে হবে।
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getConfig().getSerializationConfig().addDataSerializableFactory(1, new MyDataSerializableFactory());
বৈশিষ্ট্য | Portable Serialization | Identified DataSerializable |
---|---|---|
পারফরম্যান্স | দ্রুত, কম জায়গায় ডেটা সংরক্ষণ এবং ট্রান্সফার | উচ্চ পারফরম্যান্স, তবে Portable এর তুলনায় কম কার্যকর |
ফ্লেক্সিবিলিটি | একাধিক ভার্সন সমর্থন করে | সীমিত ভার্সন সমর্থন |
ডেটা সংরক্ষণ ফরম্যাট | ছোট, কমপ্যাক্ট | ডেটা সিরিয়ালাইজেশন ফরম্যাটের তুলনায় অনেক বেশি বড় |
ভার্সনিং সাপোর্ট | হ্যাঁ, Portable অনেক সহজে ভার্সন আপডেট করতে পারে | সীমিত ভার্সনিং সহ কাজ করা যায় |
ইউনিট | সাইজ ছোট এবং অপটিমাইজড | কাস্টম Serialization, কিছুটা বড় সাইজ |
Hazelcast ক্লাস্টারে ডেটা দ্রুত এবং কার্যকরীভাবে ট্রান্সফার করার জন্য Portable ফরম্যাটটি উপযুক্ত, তবে Identified DataSerializable এখনও অনেক ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহৃত হয়, যেখানে পারফরম্যান্স একটি প্রধান দৃষ্টিভঙ্গি।
common.read_more